package queue

// 声明一个类型 Queue2 类型，这个类型是用 []interface {} 切片实现的,这个切片类型是interface{}
/**
	用 interface{} 表示，可以接收任何类型
 */
type Queue2 []interface {}

// 添加元素, 表示可以添加任何类型的元素
func (q *Queue2) Push(v interface{})  {
	// 这里使用指针，才可以把数据真正的添加进去，共外部可用
	*q = append(*q, v)
}

// 弹出顶层元素
func (q *Queue2) Pop() interface{}  {
	// 获取最顶层元素
	head := (*q)[0]
	// 把顶层元素剔除
	*q = (*q)[1:]

	return head
}

// 判断是否有值, 是否为empty
func (q *Queue2) IsEmpty() bool {
	return len(*q) == 0
}

